package com.whut.mapper;

import com.whut.model.ContractCheckTask;
import com.whut.v_model.*;
import com.whut.v_vo.Node4PName1VO;
import org.springframework.lang.Nullable;

import java.util.List;
import java.util.Map;

public interface ContractchecktaskMapper {
    /*预置接口*/
    int deleteByPrimaryKey(Integer checkId);

    int insert(ContractCheckTask record);

    int insertSelective(ContractCheckTask record);

    ContractCheckTask selectByPrimaryKey(Integer checkId);

    int updateByPrimaryKeySelective(ContractCheckTask record);

    int updateByPrimaryKey(ContractCheckTask record);

    /*自定义接口*/
    List<ContractCheckTask> getTasksByUserId(int userId);

    List<ContractCheckTask> getTaskByFinishTime(String startTime, String endTime,String projectName);

    List<ContractCheckTask> getTaskByFinishTimeAndClient(String startTime, String endTime,int client,String projectName);

    List<ContractCheckTask> getTaskByCheckState(String startTime, String endTime, String isFinish,String projectName);

    List<ContractCheckTask> getTaskByCheckStateAndClient(String startTime, String endTime, String isFinish,int client,String projectName);

    List<ContractCheckTask> getTaskByCheckStateY(String startTime, String endTime, String isFinish,String projectName);

    List<ContractCheckTask> getTaskByCheckStateYAndClient(String startTime, String endTime, String isFinish,int client,String projectName);

    List<ContractCheckTask> getByTaskId(int taskId);

    List<ContractCheckTask> getByGroupHeaderId(int userId);

    String getDownloadNameByCheckId(int checkId);

    int getProjectNum(List<Integer> list, int taskId, int checkItemsId, String name);

    /*找到一个用户所有resultsinglechild中的项 ，通过其checkId找到 有关的CCT*/
    List<ContractCheckTask> getByInvolvedByRSC(String checkId);

    /*wq*/
    List<ContractCheckTask> getContractCheckTaskInfo(int taskId);

    int multiInsertProjectToTask(List<ContractCheckTask> list);

    List<ContractCheckTask> getCheckInfoByCheckId(int checkId);

    String getFinishTimeByCheckId(int checkId);

    int deleteAllCheckByTaskId(int taskId);

    List<ProjectScore> getLatestScoreCompare(int taskId1, int taskId2);

    List<ProjectScore> getLatestTimeRangedScoreCompare(String st1, String et1, String st2, String et2, int contractId);

    /**
     * 根据确定的合同ID 以及参建单位类型 以及搜索时间类型
     * 执行动态sql查询 返回 参建单位排序评分统计信息的列表，数据模型为com.whut.v_model.UnitRankStatistics
     *
     * @param unitName   sgUnit or jsUnit or jlUnit
     * @param contractId
     * @param st1        第一段时间（稍早一些的）的开始时间
     * @param et1        第一段时间（稍早一些的）的结束时间
     * @param st2        第二段时间（稍早一些的）的开始时间
     * @param et2        第二段时间（稍早一些的）的结束时间
     * @return java.util.List<com.whut.v_model.UnitRankStatistics>
     * @author fuzhenjie
     * @date 19.7.27 21:56
     */
    List<UnitRankStatistics> getUnitPointRank(String unitName, int contractId, String st1, String et1, String st2, String et2);

    /**
     * 通过周期ID （taskId） 从cct表中查出已经结束的cct列表
     *
     * @param taskId int 周期（片区项目） ID
     * @param st     String 搜索开始时间 可以为空
     * @param et     String 搜索结束时间 可以为空
     * @return java.util.List<com.whut.model.ContractCheckTask>
     * @author fuzhenjie
     * @date 19.7.28 21:32
     */
    List<ContractCheckTask> getFinishedCheckByTaskId(int taskId, @Nullable String st, @Nullable String et);


    List<ContractCheckTask> getBaseData(int checkId);


    /**
    * 本质上来说这个方法与getTasksByUserId方法作用基本一致，只是不排除已完成的任务
    * 从cct表中查找出所有与包含userId的组有关的cct 时间倒序
    *@author fuzhenjie
    *@date 19.10.16 9:40(GMT)
    *@param userId int 用户Id
    *@return java.util.List<com.whut.model.ContractCheckTask>
    */
    List<ContractCheckTask> getCctListByUserId(int userId);

    List<CheckAndProject> getProjectForUserStatistic(int userId,String startTime,String endTime,int taskId);

    List<CheckAndProject> getProjectByTask(List<Integer> list,String startTime,String endTime);

    List<ContractCheckTask> getCheckBytaskId(Integer taskId);

    List<PointAndProject> getFinishTimeForProject();


    List<ContractCheckTask> getAllByTaskId(int taskId);

    Integer getTaskIdByCheckId(int checkId);

    /**
     * @author： wenyihan
     * @description： 查询检查下对应的所有已被组长审核的问题
     * @date： 17:52 2020/9/10
     * @param： [checkId]
     * @return： java.util.List<com.whut.model.ContractCheckTask>
    */
    List<Object> findAllInfo(Integer checkId);

    /**
     * @author： wenyihan
     * @description： 判断改问题是否经过最终审核
     * @date： 20:11 2020/9/11
     * @param： [checkId]
     * @return： java.lang.Integer
    */
    Integer qualifyExamine(Integer checkId);

    //返回examineInfo中第二级collapse中显示的第四级名称
    List<Node4PName1VO> Getnode4nameBycheckId(Integer checkId);
    //返回examineInfo中table的信息，包括PCD表和检查人（userName）
    List<PCDandUSERNAME> findPCDInfo(Integer checkId, Integer fourthId);

    List<PCDandUSERNAME> findPCDInfoAfterUpdate(Integer checkId, Integer fourthId);

    List<Map> getProjectsByParams(List<Integer> contracts, List<String> jsUnits, List<String> sgUnits, List<String> jlUnits, List<Integer> tasks, List<Integer> projects);

    String getCreatorByCheckId(Integer checkId);
}